/******** hay que filtrar los comentarios de C ********/

int x, y;    // tambien los comentarios de C++
             // se permiten variables globales estáticas

int c;       // declarado para la prueba con los caracteres
int fact(int n) {   // un único parámetro (o ninguno) y sólo tipos enteros
  int temp;         // es posible variables locales dinámicas
  printf("No ma llegao: %d\n",n);
  temp = n;
  if (temp)
    return n * fact(n-1);
  else
    return 1;
}

int extendedAscii(char n)
{
	int signedAscii;
        signedAscii = n;
        printf("He recibido: %d",n);
        if(signedAscii + abs(signedAscii))
        {
	   return -signedAscii+127;
        }
	else
	   return signedAscii;
}

int main(void) {   // parámetro void o sin parámetro


    int a,b,z;
    int signedAsciiDePepe;
    int extendedAsciideJuan;
    char m;


    m=3;	
    x = 6;
    signedAsciiDePepe = 'f';
	
    printf("factorial(%d) = %d\n", m, fact(m));  
	     // En las llamadas a funciones
             // se permiten varios argumentos
             // también se permiten literales alfanuméricos

    a=4,b=8; // Se permiten secuencias de asignaciones

    z = b % a++; // Se implementa el módulo, y los pre-incrementos y post-incrementos

    

    printf("Resto de %d y 4 es: %d\n",b,z);
    printf("Variable 'a' fue post incrementada a %d\n",a);
    printf("Signed Ascii de Pepe es %d\n",signedAsciiDePepe);



    printf("Incremento y decremento con caracteres\n");
    m= ('A' + 1);
    m = --m;
    m = ++m;
    c = m++;
    printf("m ha de quedar como 'C': %c\n",m);
    printf("c ha de quedar como 66: %d\n",c);

    extendedAsciideJuan = extendedAscii('2'+200);
    printf("Extended Ascii %d\n",extendedAsciideJuan);

}
